import { Column, CreateDateColumn, UpdateDateColumn } from "typeorm";
import { DateTimeTransformer } from "./value-transformer";

/**
 * 基础实体类，用于定义所有实体共有的属性。
 * 这些属性包括创建者、更新者、创建时间和更新时间。
 */
export abstract class BaseEntity {
  /**
   * 创建者的属性，用于记录实体的创建者。
   */
  @Column({ name: "create_by", type: "varchar", length: 20 })
  createBy: string;

  /**
   * 更新者的属性，用于记录实体的最后更新者。
   */
  @Column({ name: "update_by", type: "varchar", length: 20, nullable: true })
  updateBy: string;

  /**
   * 创建时间的属性，自动记录实体的创建时间。
   */
  @CreateDateColumn({
    name: "create_time",
    type: "datetime",
    precision: 0,
    default: () => "CURRENT_TIMESTAMP",
    transformer: new DateTimeTransformer()
  })
  createTime: string;

  /**
   * 更新时间的属性，自动记录实体的最后更新时间。
   */
  @UpdateDateColumn({
    name: "update_time",
    type: "datetime",
    precision: 0,
    default: () => "CURRENT_TIMESTAMP",
    onUpdate: "CURRENT_TIMESTAMP",
    transformer: new DateTimeTransformer()
  })
  updateTime: string;

  /**
   * 软删除
   */
  @Column({ name: "delete_flag", type: "int", default: 0 })
  deleteFlag: number;
}
